home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Toolbox / Visual Basic Toolbox (P.I.E.)(1996).ISO / dll_gen / vbdll / vbfileio.c < prev    next >
C/C++ Source or Header  |  1993-06-01  |  4KB  |  202 lines

  1. #include "windows.h"
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. #define MAXBUFF  512
  6.  
  7. HINSTANCE hLibInst;
  8. char sztmp1[MAXBUFF];
  9. char sztmp2[MAXBUFF]; 
  10.  
  11. typedef struct {
  12.     unsigned short    year;
  13.     unsigned char    month;
  14.     unsigned char    day;
  15.     unsigned char    hour;
  16.     unsigned char    minute;
  17.     unsigned char    second;
  18. } DATETIME;
  19.  
  20. void DateTimeParse(double dt, DATETIME *pdtparsed);
  21.  
  22.  
  23. BOOL FAR PASCAL LibMain(HINSTANCE hInstance, WORD wDataSeg, WORD cbHeap, DWORD ignore)
  24. {
  25.  
  26.     hLibInst = hInstance;
  27.  
  28.     return TRUE;
  29. }
  30.  
  31.  
  32. unsigned long __export CALLBACK CRTfopen(LPSTR filename, LPSTR mode)
  33. {
  34.     return (unsigned long)fopen(filename, mode);
  35. }
  36.  
  37. int __export CALLBACK CRTfclose(FILE *stream)
  38. {
  39.     return fclose(stream);
  40. }
  41.  
  42. int __export CALLBACK CRTfputs(LPSTR string, FILE *stream)
  43. {
  44.     return fputs(string, stream);
  45. }
  46.  
  47. int __export CALLBACK CRTfgets(LPSTR string, int n, FILE *stream)
  48. {
  49.     if (fgets(string, n, stream) == NULL)
  50.         return 0;
  51.     else
  52.         return 1;
  53. }
  54.  
  55. int __export CALLBACK CRT_fcloseall(void)
  56. {
  57.     return _fcloseall();
  58. }
  59.  
  60. int __export CALLBACK CRTfflush(FILE *stream)
  61. {
  62.     return fflush(stream);
  63. }
  64.  
  65. int __export CALLBACK CRT_flushall(void)
  66. {
  67.     return _flushall();
  68. }
  69.  
  70. unsigned long __export CALLBACK CRTtmpfile(void)
  71. {
  72.     return (unsigned long)tmpfile();
  73. }
  74.  
  75. int __export CALLBACK CRTtmpnam(LPSTR string)
  76. {
  77.     if (tmpnam(string) == NULL)
  78.         return 0;
  79.     else
  80.         return 1;
  81. }
  82.  
  83. int __export CALLBACK CRT_rmtmp(void)
  84. {
  85.     return _rmtmp();
  86. }
  87.  
  88. int __export CALLBACK CRTfeof(FILE *stream)
  89. {
  90.     return feof(stream);
  91. }
  92.  
  93. int __export CALLBACK CRTferror(FILE *stream)
  94. {
  95.     return ferror(stream);
  96. }
  97.  
  98. void __export CALLBACK CRTclearerr(FILE *stream)
  99. {
  100.     clearerr(stream);
  101. }
  102.  
  103. int __export CALLBACK CRTfgetc(FILE *stream)
  104. {
  105.     return fgetc(stream);
  106. }
  107.  
  108. int __export CALLBACK CRTfputc(int c, FILE *stream)
  109. {
  110.     return fputc(c, stream);
  111. }
  112.  
  113. UINT __export CALLBACK CRTfread(LPSTR buffer, UINT size, UINT count, FILE *stream)
  114. {
  115.     return fread(buffer, size, count, stream);
  116. }
  117.  
  118. int __export CALLBACK CRTfseek(FILE *stream, long offset, int orign)
  119. {
  120.     return fseek(stream, offset, orign);
  121. }
  122.  
  123. long __export CALLBACK CRTftell(FILE *stream)
  124. {
  125.     return ftell(stream);
  126. }
  127.  
  128. UINT __export CALLBACK CRTfwrite(LPSTR buffer, UINT size, UINT count, FILE *stream)
  129. {
  130.     return fwrite(buffer, size, count, stream);
  131. }
  132.  
  133. void __export CALLBACK CRTrewind(FILE *stream)
  134. {
  135.     rewind(stream);
  136. }
  137.  
  138. void __export CALLBACK DTParse(double dt)
  139. {
  140.     DATETIME dtp;
  141.     char sztmp[80];
  142.     
  143.     DateTimeParse(dt, &dtp);
  144.     sprintf(sztmp, "%u/%u/%u %u:%u:%u", dtp.month, dtp.day, dtp.year, dtp.hour, dtp.minute, dtp.second);
  145.     MessageBox(NULL, sztmp, "Current Date/Time", MB_OK);
  146. }
  147.     
  148.  
  149. void DateTimeParse(double dt, DATETIME *pdtparsed)
  150.     {
  151.     long        julian;
  152.     int         cent;
  153.     unsigned long frac;
  154.     long        temp;
  155.     double      dDay;
  156.  
  157.     unsigned short    year;
  158.     unsigned char    month;
  159.     unsigned char    day;
  160.     unsigned char    hour;
  161.     unsigned char    minute;
  162.     unsigned char    second;
  163.  
  164.     dDay = dt;
  165.     julian = (long)dDay;
  166.     dDay -= julian;
  167.     if (julian < 0)
  168.         dDay *= -1;
  169.     frac = (unsigned long) ((dDay * 86400) + 0.5);
  170.     julian += 109511;
  171.  
  172.     cent = (int) ((4 * julian + 3) / 146097);
  173.  
  174.     julian += cent - cent / 4;
  175.     year = (unsigned short) ((julian * 4 + 3) / 1461);
  176.     temp = julian - (year * 1461L) / 4;
  177.     month = (unsigned char) ((temp * 10 + 5) / 306);
  178.     day = (unsigned char) (temp - (month * 306L + 5) / 10 + 1);
  179.  
  180.     month += 3;
  181.     if (month > 12)
  182.         {
  183.         month -= 12;
  184.         year  += 1;
  185.         }
  186.     year += 1600;
  187.  
  188.     hour = (unsigned char) (frac / 3600);
  189.     minute = (unsigned char) ((frac / 60) % 60);
  190.     second = (unsigned char) (frac % 60);
  191.  
  192.     //    return structure values
  193.     //
  194.     pdtparsed->year = year;
  195.     pdtparsed->month = month;
  196.     pdtparsed->day = day;
  197.     pdtparsed->hour = hour;
  198.     pdtparsed->minute = minute;
  199.     pdtparsed->second = second;
  200.     }
  201.  
  202.